import job from "@/assets/data/job";
export default {
  data() {
    return {
      lastLevel: [] // 职业最后一级
    };
  },
  methods: {
    // 设置职业数据
    // 1：子职业parent父节点字段增加
    // 2：第三级职业keywords增加
    setJobData() {
      // 已经设置过，直接返回
      if (job.hadSet) return;

      job.forEach(level1 => {
        level1.sonList.forEach(level2 => {
          // parent设置
          level2.parent = level1;
          level2.sonList.forEach(level3 => {
            // parent设置
            level3.parent = level2;
            // keywords拼接，用于做搜索
            level3.keywords =
              level3.code + level1.desc + level2.desc + level3.desc;
          });
        });
      });

      // 设置已经设置过的标识，防止重复设置
      job.hadSet = true;
    },

    // 设置职业最后一级
    setLastLevel() {
      let lastLevel = [];
      job.forEach(level1 => {
        level1.sonList.forEach(level2 => {
          // concat最后一级
          lastLevel = lastLevel.concat(level2.sonList);
        });
      });

      this.lastLevel = lastLevel;
    },

    // 根据id查询下一级的list：职业
    jobGetNextLevel(currentJob) {
      let nextLevel = [];
      if (!currentJob) {
        // 没有指定currentJob，查第一大类
        nextLevel = job;
      } else {
        // 职业自带sonList，不用去做筛选处理
        nextLevel = currentJob.sonList;
      }

      // 空处理
      nextLevel = nextLevel || [];
      return nextLevel;
    },

    // 查询：职业
    jobSearch() {
      // 最后一级list

      // 根据最后一级的keywords字段做搜索
      const searchResult = this.lastLevel.filter(item => {
        return item.keywords.indexOf(this.keywords) >= 0;
      });

      // 赋值
      this.searchResult = searchResult.map(item => {
        // showDesc
        item.showDesc = `<span style="color: ${globalConfig.ui.colorTheme}">[${
          item.code
        }]</span> ${item.parent.parent.desc} --- ${item.parent.desc} --- ${
          item.desc
        }`;
        return item;
      });
    },

    // 选中：job
    jobSelect(item) {
      this.$emit("select", item);
    },

    // 回显职业
    reviewJob() {
      // 从最后一级中找
      const findJob = this.lastLevel.find(item => {
        return item.code === this.selectData.code;
      });
      if (findJob) {
        // 找到对应数据，进行选中回显操作
        this.jobSelect(findJob);
      }
    },

    // 初始化职业
    initJob() {
      // 设置职业数据
      this.setJobData();
      // 设置职业最后一级
      this.setLastLevel();
      // 如果当前selectData有值，则去做回显
      if (this.selectData.code) {
        this.reviewJob();
      }
    }
  }
};
